﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sdepci.InfoCode.BLL.CodeDesign;

namespace Sdepci.InfoCode.Web.Interface
{
    public partial class SaveInfoCode : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                this.Response.Clear();
                this.Response.Write(this.Save());
                this.Response.End();
            }
        }

        private string Save()
        {
            string infoCode, infoDesc, ruleGuid, createUserId, serialReference, serialNumber;

            // 判断参数的有效性
            if (this.Request.QueryString["InfoCode"] != null && this.Request.QueryString["InfoCode"].Trim().Length > 0)
            {
                infoCode = this.Request.QueryString["InfoCode"].Trim();
            }
            else
            {
                return "MissingParam{|}所需的参数不完整：编码为空！请与系统管理员联系。";
            }

            if (this.Request.QueryString["InfoDesc"] != null)
            {
                infoDesc = this.Request.QueryString["InfoDesc"].Trim();
            }
            else
            {
                return "MissingParam{|}所需的参数不完整：未能获取编码说明！请与系统管理员联系。";
            }

            if (this.Request.QueryString["RuleGuid"] != null && this.Request.QueryString["RuleGuid"].Trim().Length > 0)
            {
                ruleGuid = this.Request.QueryString["RuleGuid"].Trim();
            }
            else
            {
                return "MissingParam{|}所需的参数不完整：编码类型为空！请与系统管理员联系。";
            }

            if (this.Request.QueryString["CreateUserId"] != null && this.Request.QueryString["CreateUserId"].Trim().Length > 0)
            {
                createUserId = this.Request.QueryString["CreateUserId"].Trim();
            }
            else
            {
                return "MissingParam{|}所需的参数不完整：未能获取创建编码的用户证档号！请与系统管理员联系。";
            }

            if (this.Request.QueryString["SerialReference"] != null && this.Request.QueryString["SerialReference"].Trim().Length > 0)
            {
                serialReference = this.Request.QueryString["SerialReference"].Trim();
            }
            else
            {
                return "MissingParam{|}所需的参数不完整：流水号参考码为空，未能获取！请与系统管理员联系。";
            }

            if (this.Request.QueryString["SerialNumber"] != null && this.Request.QueryString["SerialNumber"].Trim().Length > 0)
            {
                serialNumber = this.Request.QueryString["SerialNumber"].Trim();
            }
            else
            {
                return "MissingParam{|}所需的参数不完整：当前流水号为空，未能获取！请与系统管理员联系。";
            }

            InfoManager info = new InfoManager();
            // 判断编码是否已存在（往往在用户保存操作超时的情况下发生）
            if (info.Exist(ruleGuid, infoCode))
            {
                return "Existed{|}操作超时：该编码已被其他用户占用。";
            }

            // 保存详细信息编码
            if (info.Add(infoCode, infoDesc, ruleGuid, createUserId, serialReference, serialNumber))
            {
                // 再保存简要信息编码
                new BriefManager().Save(infoCode, infoDesc, ruleGuid, createUserId, serialReference, serialNumber);
                return "Success!";
            }
            else
            {
                return "InternalError{|}编码系统内部错误：请与系统管理员联系。";
            }
        }
    }
}
